package com.github.rexsheng.mybatis.annotation;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

import org.springframework.context.annotation.Import;
import org.springframework.core.annotation.AliasFor;

import com.github.rexsheng.mybatis.config.BuilderConfiguration;
import com.github.rexsheng.mybatis.config.IDatabaseDialect;
import com.github.rexsheng.mybatis.config.MySqlDialect;
import com.github.rexsheng.mybatis.core.AutoInterceptorScannerRegister;

/**
 * @author RexSheng
 * 2021年6月8日 下午8:59:15
 * @since 1.6.0
 */
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE})
@Documented
@Import({AutoInterceptorScannerRegister.class})
@EnableMybatisExtensionMapper
public @interface EnableMybatisExtension {

	/**
	 * 数据库方言
	 * @return IDatabaseDialect
	 */
	@AliasFor("db")
	Class<? extends IDatabaseDialect> value() default MySqlDialect.class;
	
	/**
	 * 数据库方言
	 * @return IDatabaseDialect
	 */
	@AliasFor("value")
	Class<? extends IDatabaseDialect> db() default MySqlDialect.class;
	
	/**
	 * 是否支持mybatisplus
	 * @return boolean
	 */
	boolean mybatisPlus() default false;
	
	/**
	 * 使用此自定义配置类时，前面配置属性无效
	 * @return BuilderConfiguration
	 */
	Class<? extends BuilderConfiguration> builder() default BuilderConfiguration.class;
}
